December 21, 2020
명령어 | reset | revert |
---|---|---|
수행내용 | 커밋 히스토리를 강제로 조작하여 특정시점 이전의 커밋삭제 | 특정 커밋을 되돌리는 작업도 하나의 커밋으로 간주하여 커밋 히스토리에 추가 |
장점 | 원격 저장소에 다른 흔적없이 커밋들을 제거할 수 있으므로 혼자하는 작업이라면 가장 깔끔한 해결책이 될수 있다. | 특정 커밋을 되돌리는 작업조차 히스토리에 남으므로 내가 되돌린 시점을 누구나 쉽게 파악할 수 있다. 그러므로 팀으로 작업할 때 유용하다. |
방법 | git reset —hard HEAD^ | git revert [되돌리고 싶은 commit의 hash] |
히스토리를 강제로 삭제하여 조작한다는 점에서 팀과 공유하는 원격저장소라면 혼란이 생길 수 있다.
해당 로컬저장소에서 git bash나 terminal를 열어서 아래 명령문을 입력한다.
$ git reset --hard HEAD^
$ git reset --hard HEAD~3
$ git push -f origin master
위의 경우에는 원하는 시점으로 커밋을 되돌리기 위해서 6차례의 reset을 진행 후 강제 푸시하였다.
원하는 과거의 시점으로 커밋이 되돌려지며 해당 내역이 히스토리에 남는다.
해당 로컬저장소에서 git bash나 terminal를 열어서 아래 명령문을 입력한다.
$ git revert [되돌리고 싶은 commit hash]
😩 단점 -> 되돌리고 싶은 커밋의 수만큼 불필요한 revert 커밋이 생겨난다.
$ git revert --no-commit [되돌리고 싶은 commit의 hash]
😩 단점 -> revert할 커밋의 수만큼 명령어를 반복해서 실행해야 한다.
$ git revert --no-commit HEAD~3..
$ git commit -m 'Revert "Commit commitName1, commitName2, commitName3"'
$ git push origin master